package br.com.fiap.atividade5.aspects;

import java.math.BigDecimal;

import br.com.fiap.atividade5.business.PedidoProdutoBusiness;
import br.com.fiap.atividade5.entity.PedidoProduto;

public aspect CalcDescontoValorVendaAspect {
	
	pointcut calcDesconto(PedidoProduto pp) : execution(public void PedidoProdutoBusiness.calculateValor(PedidoProduto)) && args(pp);
	
	after(PedidoProduto pp) : calcDesconto(pp) {

		BigDecimal valorTotal = pp.getTotal();
		
		if (pp.getProduto().isInPromocao()) {
			BigDecimal descontoPromocional = new BigDecimal("100");
			valorTotal = valorTotal.subtract(descontoPromocional);
			pp.setDesconto(descontoPromocional);
		}
		
		if (new BigDecimal("1000").compareTo(valorTotal) < 0) {
			pp.setDesconto(pp.getDesconto().add(valorTotal.multiply(new BigDecimal("0.05"))));
			valorTotal = valorTotal.multiply(new BigDecimal("0.95"));
		}
		
		pp.setTotal(valorTotal);
	}
	
}
